package com.zlp.mall.portal.modules.oms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zlp.mall.common.api.Pager;
import com.zlp.mall.portal.modules.oms.dto.req.OrderSubmitRep;
import com.zlp.mall.portal.modules.oms.dto.resp.OrderConfrimResp;
import com.zlp.mall.portal.modules.oms.dto.resp.OrderDetailResp;
import com.zlp.mall.portal.modules.oms.dto.resp.OrderItemDetailDTO;
import com.zlp.mall.portal.modules.oms.dto.resp.OrderListResp;
import com.zlp.mall.portal.modules.oms.model.Order;

import java.util.List;

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author ZouLiPing
 * @since 2021-10-15
 */
public interface OrderService extends IService<Order> {


    /**
     *  订单确认信息
     * @param ids
     * @date: 2021/10/16 21:00
     * @return: com.zlp.mall.portal.modules.oms.dto.resp.OrderConfrimResp
     */
    OrderConfrimResp generateConfirmOrder(List<Long> ids);

    
    /** 
     * 提交订单
     * @param orderSubmitRep
     * @date: 2021/10/19 9:37
     * @return: void 
     */
    Long generateOrder(OrderSubmitRep orderSubmitRep);

    /**
     * 获取订单明细
     * @param orderId
     * @date: 2021/10/22 17:33
     * @return: com.zlp.mall.portal.modules.oms.dto.resp.OrderDetailResp
     */
    OrderDetailResp orderDetail(Long orderId);

    /** 
     * 获取订单信息
     * @param orderId
     * @date: 2021/10/22 17:35
     * @return: com.zlp.mall.portal.modules.oms.model.Order 
     */
    Order getByOrderId(Long orderId);

    /**
     * 取消订单
     * @date: 2021/10/22 21:32
     * @return: void
     */
    void cancelOverTimeOrder();


    /**
     *  我的订单列表
     * @param pageSize
     * @param pageNum
     * @date: 2021/10/24 21:35
     * @return: com.zlp.mall.common.api.Pager<com.zlp.mall.portal.modules.oms.dto.resp.OrderListResp>
     */
    Pager<OrderListResp> getMyOrders(Integer pageSize, Integer pageNum);

    /** 
     * 获取订单信息
     * @param orderId
     * @date: 2021/10/25 9:59
     * @return: com.zlp.mall.portal.modules.oms.dto.resp.OrderItemDetailDTO 
     */
    OrderItemDetailDTO getOrderItemDetail(Long orderId);

    /** 
     * 支付成功回调
     * @param orderId
     * @param payType
     * @date: 2021/10/25 14:57
     * @return: void
     */
    void paySuccess(Long orderId, Integer payType);
}
